home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / nhx / main.bas < prev    next >
BASIC Source File  |  1995-05-09  |  5KB  |  227 lines

  1.  
  2. Sub DoSave ()
  3. For i% = 0 To TopicCount%
  4.     SaveHyperText (i%)
  5.     Next
  6.  
  7. End Sub
  8.  
  9. Function FindAndShowTopic% (a$)
  10.     On Error GoTo Err2
  11.     
  12.     a$ = Mid$(a$, InStr(a$, "[") + 1)
  13.     BracketPos% = InStr(a$, "]")
  14.     If BracketPos% > 0 Then a$ = Left$(a$, BracketPos% - 1)
  15.     
  16.     If Left$(a$, 3) = "run" Then
  17.         a$ = Mid$(a$, 4)
  18.         a$ = RTrim$(LTrim$(a$))
  19.         i% = Shell(a$, 1)
  20.         FindAndShowTopic = 0
  21.         Exit Function
  22.     Else
  23.         For i% = 0 To TopicCount%
  24.             If mainform.texttopic(i%).tag = a$ Then
  25.                 ShowTopic i%
  26.                 FindAndShowTopic = -1
  27.                 Exit Function
  28.                 End If
  29.             Next
  30.     End If
  31.  
  32. MsgBox "couldnt find topic " + a$
  33. FindAndShowTopic = 0
  34. Exit Function
  35.  
  36. Err2:
  37.     If Err = 360 Then 'obj already loaded
  38.         Resume Next
  39.     ElseIf Err = 53 Then 'file not found
  40.         MsgBox "file " + filename$ + "not found"
  41.         Exit Function
  42.     Else
  43.         MsgBox "LoadHyper err" + Error$(Err) + " " + Str$(Err)
  44.         Resume Next
  45.     End If
  46.  
  47. End Function
  48.  
  49. Function FindTopic% (a$)
  50.     On Error GoTo Err4
  51.     
  52.     a$ = Mid$(a$, InStr(a$, "[") + 1)
  53.     BracketPos% = InStr(a$, "]")
  54.     If BracketPos% > 0 Then a$ = Left$(a$, BracketPos% - 1)
  55.     
  56.     If LCase$(Left$(a$, 3)) = "run" Then
  57.         a$ = Mid$(a$, 4)
  58.         a$ = RTrim$(LTrim$(a$))
  59.         i% = Shell(a$, 1)
  60.         FindTopic = 0
  61.         Exit Function
  62.     Else
  63.         For i% = 0 To TopicCount%
  64.             If mainform.texttopic(i%).tag = a$ Then
  65.                 FindTopic = i%
  66.                 Exit Function
  67.                 End If
  68.             Next
  69.     End If
  70.  
  71. MsgBox "couldnt find topic " + a$
  72. FindTopic = 0
  73. Exit Function
  74.  
  75. Err4:
  76.     If Err = 360 Then 'obj already loaded
  77.         Resume Next
  78.     ElseIf Err = 53 Then 'file not found
  79.         MsgBox "file " + filename$ + "not found"
  80.         Exit Function
  81.     Else
  82.         MsgBox "LoadHyper err" + Error$(Err) + " " + Str$(Err)
  83.         Resume Next
  84.     End If
  85.  
  86. End Function
  87.  
  88. Sub HideTopic (i%)
  89.     mainform.texttopic(i%).sellength = 0
  90.     mainform.texttopic(i%).visible = 0
  91. End Sub
  92.  
  93. Sub LoadHyperText (filename$, editbox%)
  94. On Error GoTo Err1
  95. Load mainform.texttopic(editbox%)
  96. mainform.texttopic(editbox%).tag = filename$
  97. Open filename$ For Input As #1
  98. FirstTime% = -1
  99. While Not EOF(1)
  100.     Line Input #1, a$
  101.     If Left$(a$, 1) = ";" Then
  102.     Else
  103.         If FirstTime% = 0 Then b$ = b$ + NL$
  104.         b$ = b$ + a$
  105.     End If
  106.     FirstTime% = 0
  107.     Wend
  108.  
  109. Close #1
  110. mainform.texttopic(editbox%).text = b$
  111. TopicCount% = editbox%
  112. Exit Sub
  113.  
  114. Err1:
  115.     If Err = 360 Then 'obj already loaded
  116.         Resume Next
  117.     ElseIf Err = 53 Then 'file not found
  118.         MsgBox "file " + filename$ + "not found"
  119.         Exit Sub
  120.     Else
  121.         MsgBox "LoadHyper err" + Error$(Err) + " " + Str$(Err)
  122.         Resume Next
  123.     End If
  124.  
  125. End Sub
  126.  
  127.  
  128. Sub main ()
  129. NL$ = Chr$(13) + Chr$(10)
  130. Q$ = Chr$(34)
  131. LoadHyperText "nhx.nhx", 0
  132. a$ = mainform.texttopic(0).text
  133.  
  134. CurrentTopic% = 1
  135. Do
  136.     If Len(a$) <= 0 Then Exit Do
  137.     BracketPos% = InStr(a$, "[") + 1
  138.     If BracketPos% = 1 Then Exit Do
  139.     a$ = Mid$(a$, BracketPos%)
  140.     BracketPos% = InStr(a$, "]") - 1
  141.     If BracketPos% <> 1 Then
  142.         b$ = Left$(a$, BracketPos%)
  143.         LoadHyperText b$, CurrentTopic%
  144.         CurrentTopic% = CurrentTopic% + 1
  145.         End If
  146.     Loop
  147. CurrentTopic% = 0
  148. mainform.Show
  149. End Sub
  150.  
  151. Function NewHyperText$ ()
  152. nhx$ = UCase$(mainform.texttopic(0).text)
  153.  
  154. Do
  155.     i% = 1
  156.     Do
  157.         a$ = "Topic" + LTrim$(Format$(i%, "######")) + ".nhx"
  158.         b$ = UCase$(a$)
  159.         If InStr(nhx$, b$) = 0 Then Exit Do
  160.         If i% > 32000 Then Exit Function
  161.         i% = i% + 1
  162.         Loop
  163.     a$ = InputBox$("enter filename for new topic", APPNAME$, a$)
  164.     b$ = UCase$(a$)
  165.     
  166.     ' validate the filename
  167.  
  168.     filename$ = a$: ext$ = ""
  169.     dotpos% = InStr(a$, ".")
  170.     If dotpos% Then
  171.         filename$ = Left$(Left$(a$, dotpos% - 1), 8)
  172.         ext$ = Mid$(a$, dotpos% + 1)
  173.         End If
  174.     
  175.     filename$ = Left$(filename$, 8)
  176.     If ext$ = "" Then ext$ = ".nhx"
  177.     filename$ = filename$ + ext$
  178.     a$ = filename$
  179.     b$ = UCase$(a$)
  180.     If InStr(nhx$, b$) = 0 Then Exit Do
  181.     MsgBox "sorry, " + a$ + " is already in use, think of another name"
  182.     Loop
  183.  
  184. If Dir$(a$) = "" Then
  185.     Open a$ For Output As #1
  186.     Print #1, "File " + a$
  187.     Close #1
  188.     End If
  189. mainform.texttopic(0).text = mainform.texttopic(0).text + NL$ + "[" + a$ + "]"
  190. LoadHyperText a$, TopicCount% + 1
  191.  
  192. NewHyperText = "[" + a$ + "]"
  193. End Function
  194.  
  195. Sub ni ()
  196. MsgBox "Sorry, feature not implemented yet"
  197. End Sub
  198.  
  199. Sub SaveHyperText (editbox%)
  200. On Error GoTo Err3
  201. filename$ = mainform.texttopic(editbox%).tag
  202. Open filename$ For Output As #1
  203. Print #1, mainform.texttopic(editbox%).text
  204. Close
  205. Close #1
  206. Exit Sub
  207.  
  208. Err3:
  209.     If Err = 360 Then 'obj already loaded
  210.         Resume Next
  211.     ElseIf Err = 53 Then 'file not found
  212.         MsgBox "file " + filename$ + "not found"
  213.         Exit Sub
  214.     Else
  215.         MsgBox "LoadHyper err" + Error$(Err) + " " + Str$(Err)
  216.         Resume Next
  217.     End If
  218.  
  219. End Sub
  220.  
  221. Sub ShowTopic (i%)
  222.     mainform.texttopic(i%).visible = -1
  223.     CurrentTopic% = i%
  224. End Sub
  225.  
  226.  
  227.